// vuex中的permission用来存放当前的静态路由 +当前用户的权限允许的动态路由
import { constantRoutes, asyncRoutes } from '@/router'
const state = {
  routes: constantRoutes // 所有人默认拥有的静态路由
}
const mutations = {
  setRoutes(state, newRoutes) {
    // 下面这样写语法正确但业务不正确，当用户退出后，routes中保存的仍是上一位用户的权限路由。如果换了用户，那他应该只有静态路由，没有上一位用户的路由
    // state.routes = [...state.routes, ...newRoutes]
    state.routes = [...constantRoutes, ...newRoutes]
  }
}
const actions = {
  // 筛选权限路由
  // menus 是用户资料中的的数据 - 是权限的标识
  filterRoutes(context, menus) {
    var routes = []
    menus.forEach(key => {
      // key是标识
      // 再asyncRoutes中筛选有没有对象中name = key的
      // routes - [{},{}]
      const arr = asyncRoutes.filter(item => item.name === key)
      routes.push(...arr)
      // routes是满足权限的路由数组
    })
    routes.push({
      path: '*',
      redirect: '/404',
      hidden: true
    })
    context.commit('setRoutes', routes) // 将动态路由提交给mutations,与静态路由合并
    return routes // state中的数据用来显示左侧导航 - actions中return的是给路由addRoutes用的
  }
}
export default {
  namespaced: true,
  state,
  mutations,
  actions
}
